/*
 * %W% %E%
 *
 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
package javax.print.attribute.standard;

import javax.print.attribute.Attribute;
import javax.print.attribute.EnumSyntax;
import javax.print.attribute.PrintServiceAttribute;

/**
 * Class ColorSupported is a printing attribute class, an enumeration, that 
 * identifies whether the device is capable of any type of color printing at 
 * all, including highlight color as well as full process color. All document 
 * instructions having to do with color are embedded within the print data (none 
 * are attributes attached to the job outside the print data). 
 * <P>
 * Note: End users are able to determine the nature and details of the color 
 * support by querying the {@link PrinterMoreInfoManufacturer 
 * PrinterMoreInfoManufacturer} attribute. 
 * <P>
 * Don't confuse the ColorSupported attribute with the {@link Chromaticity 
 * Chromaticity} attribute. {@link Chromaticity Chromaticity} is an attribute 
 * the client can specify for a job to tell the printer whether to print a 
 * document in monochrome or color, possibly causing the printer to print a 
 * color document in monochrome. ColorSupported is a printer description 
 * attribute that tells whether the printer can print in color regardless of how 
 * the client specifies to print any particular document. 
 * <P>
 * <B>IPP Compatibility:</B> The IPP boolean value is "true" for SUPPORTED and 
 * "false" for NOT_SUPPORTED. The category name returned by 
 * <CODE>getName()</CODE> is the IPP attribute name.  The enumeration's 
 * integer value is the IPP enum value.  The <code>toString()</code> method 
 * returns the IPP string representation of the attribute value.
 * <P>
 *
 * @author  Alan Kaminsky
 */
public final class ColorSupported extends EnumSyntax 
    implements PrintServiceAttribute {
  
    private static final long serialVersionUID = -2700555589688535545L;

    /**
     * The printer is not capable of any type of color printing.
     */
    public static final ColorSupported NOT_SUPPORTED = new ColorSupported(0);

    /**
     * The printer is capable of some type of color printing, such as 
     * highlight color or full process color. 
     */
    public static final ColorSupported SUPPORTED = new ColorSupported(1);

    /**
     * Construct a new color supported enumeration value with the given 
     * integer value. 
     *
     * @param  value  Integer value.
     */
    protected ColorSupported(int value) {
	super (value);
    }

    private static final String[] myStringTable = {"not-supported",
						   "supported"};

    private static final ColorSupported[] myEnumValueTable = {NOT_SUPPORTED,
							      SUPPORTED};

    /**
     * Returns the string table for class ColorSupported.
     */
    protected String[] getStringTable() {
	return myStringTable;
    }

    /**
     * Returns the enumeration value table for class ColorSupported.
     */
    protected EnumSyntax[] getEnumValueTable() {
	return myEnumValueTable;
    }

    /**
     * Get the printing attribute class which is to be used as the "category" 
     * for this printing attribute value.
     * <P>
     * For class ColorSupported, the category is class ColorSupported itself. 
     *
     * @return  Printing attribute class (category), an instance of class
     *          {@link java.lang.Class java.lang.Class}.
     */
    public final Class<? extends Attribute> getCategory() {
	return ColorSupported.class;
    }

    /**
     * Get the name of the category of which this attribute value is an 
     * instance. 
     * <P>
     * For class ColorSupported, the category name is <CODE>"color-supported"</CODE>. 
     *
     * @return  Attribute category name.
     */
    public final String getName() {
	return "color-supported";
    }
    
}
